Skip to content

Enable tone generator - #3

Closed
ranj063 wants to merge 15 commits into
thesofproject:topic/sof-devfrom
ranj063:topic/tone-part-2
Closed

Enable tone generator#3
ranj063 wants to merge 15 commits into
thesofproject:topic/sof-devfrom
ranj063:topic/tone-part-2

Conversation

@ranj063

@ranj063 ranj063 commented Jun 25, 2018

Copy link
Copy Markdown
Collaborator

This patchset adds the support for triggering hostless siggen pipelines using the kcontrol associated with the siggen widget. It adds a bespoke IO handler for switch type kcontrols such as those required for triggering the tone component.

It also introduces the concept of a virtual FE dai link. Previously, when trying to enable the hostless pipeline, the codec was not getting enabled and the tone remained inaudible.
Therefore, in such cases, a virtual FE dai link is used to establish a connection to the BE dai and enable the codec when the pipeline is triggered.

The virtual FE will be created when a siggen widget is loaded and freed when the siggen widget is unloaded. It will be used for enabling the BE dai in the kcontrol IO handler for the kcontrol attached to the siggen by calling the soc_spcm_runtime_update() method.

Tested with:

Minnowboard turbot with RT5651 and Up squared board with HifiBerry DAC+

SOF kernel: https://github.com/ranj063/sound branch: topic/tone
SOF: https://github.com/ranj063/sof branch: topic/tone
SOFT: https://github.com/ranj063/soft branch: topic/tone

Please store the config before switching to the tone topology using:
alsactl store -f config.state

And restore after switching to the tone topology with:
alsactl restore -f config.state

v4 changes:
1. minor changes to switch kcontrol IO Handler
2. included the patch to enable kcontrol for siggen widget

Please ignore the patchset in the mailing list.

ranj063 added 15 commits June 23, 2018 22:17
This patch proposes to enable kcontrols for siggen type
dapm widgets. This will allow triggering the tone generating siggen
component and also modifying the run-time attributes such as frequency,
amplitude etc.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Check if the siggen comp has exactly 1 kcontrol for triggering.
Since the kcontrol for the siggen serves as an
ON/OFF switch, its max value should be 1.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This patch proposes a new IO handler for switch type kcontrols
which can be used to trigger components such as siggen or control
volume mute functionality.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
…rol IO handler

This patch adds the changes to the switch control IO handler to
handle the additional steps required to trigger the siggen
pipeline based on user input.wq

When the user switches the siggen control ON, the IO handler sends
the ipc messages required to set up the pcm params and start the
pipeline.

When the user switches it off, it frees the pcm and resets the pipeline.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Hostless pipelines lack a FE dai that is used to establish a path
to the BE and enable the codecs. Virtual FE dai links can be used in
such cases to establish a connection to the
BE. This patch adds a new flag named "virtual" to the
dai link structure that will be used to check if a dai link is
virtual.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This patch adds the methods for create a virtual FE dal link
and add it to the sound card. It also adds the method to free
the virtual FE connected to the card.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
When walking the graph to discover the path from the virtual FE to
the BE, there is only one widget in the path. Do not remove
this BE widget from the list, so it can be used to connect with the
virtual FE dai link.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
…iggen widget

Since hostless pipelines do not have a PCM, they need a virtual
FE dai link that can be used to startup the BE dai links
when the pipeline is triggered. Without this, the BE dai links
do not get enabled and the tone would be inaudible.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
…irtual dai link

Virtual FE dai links should be manually set to running
state by default with a pcm runtime. The active count of their cpu_dai
and codec_dai's should also be updated. This is required to establish
FE-BE connection and enable the BE DAI when the dpcm runtime is updated.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Virtual FE dai links do not need to register the pcm device. So
just create the empty pcm device and substream in the
requested direction.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
the soc_dpcm_runtime_update() method will be called to establish a
connection to the BE and enable the codec. So make this method
accessible to modules.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Enable BE dai before triggering the siggen pipeline by calling
the soc_dpcm_runtime_update() method.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
@plbossart

Copy link
Copy Markdown
Member

15 commits spread between ASoC, SOF, this is very hard to review.
Can we first have an initial PR with all the ASoC core-related changes, and a second one that uses the core changes in SOF?
I also have a bit of concerns about the 'virtual FE" term. We already have the concept of 'no_pcm" and should describe the difference. I think you want to highlight that the 'virtual PCM" only relies on controls to revisit the routing without the need for a 'no-pcm' stream to be opened.?

@ranj063

ranj063 commented Jun 25, 2018

Copy link
Copy Markdown
Collaborator Author

Sure. I can send just the ASoC core changes first. Thanks!

@tokyovigilante tokyovigilante mentioned this pull request Nov 7, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants